package com.ntd.study.base.classe.loader;

/**
 * ClassLoader 学习
 * 1.启动类加载器 Bootstrap ClassLoader
 * |-- 加载范围：存放在<JAVA_HOME />\lib目录中的（只会加载既定名称的jar包）
 * 2.扩展类加载器 Extension ClassLoader
 * |-- 加载范围：存放在<JAVA_HOME />\lib\ext目录中的所有类库，开发者可以直接使用
 * 3.应用程序加载器 Application ClassLoader
 * |-- 加载用户类路径上指定的类库，开发者可以直接使用，一般情况下这个就是程序中默认的类加载器
 * <p>
 * tomcat 类加载机制
 * commonLoader 用于加载tomcat lib里面的jar
 * catalinaLoader 用于加载只让tomcat使用的jar - 需要在配置文件配置
 * sharedLoader 用于加载只让tomcat 应用使用的jar - 需要在配置文件配置
 * WebAppClassLoader 工程的classLoader - 应用程序自己用 - 违反双亲委派模型
 * |-- /WEB-INFO/classes
 * |-- /WEB-INFO/lib
 */
public class ClassLoader extends java.lang.ClassLoader {
    /**
     * 双亲委派模型
     * 双亲委派模型过程
     * 1.某个特定的类加载器接到加载类的请求
     * 2.将加载任务委托给父类加载器
     * 3.依次递归
     * 4.父类加载成功返回
     * 5.父类无法加载，子类去加载
     * 6.依次递归
     * <p>
     * 双亲委派模型的好处
     * Java类随着它的类加载器一起具备了带有优先级的层次关系，保证程序的稳定运行。
     *
     * @param args
     */
    public static void main(String[] args) {

    }
}
